/**
 * 文件接口统一封装
 */
import { message } from 'antd'
import { modalApi } from '@/utils/modalReq'
import { pget, postJson } from '@/utils/req'
// 模板文件下载
export const downloadFileUrl = `${modalApi.download}/download`
// 文件中心导出
// 2.1 任务中心接口
// 接口：/dashboard/resource/export
// 请求方式：POST
// 请求参数：
// {
// "resourceId": 94,
// "queryDesc": "公司导出：34； 系统设置：公司导出",
// "queryParam": "{\"merchantId\":34}"
// }
// https:sys-amc.xiaojukeji.com/bms/req-proxy/frame-api/mgrApi/dashboard/resource/export
// 会查询所有符合查询条件条件的数据，并创建导出任务
export function downloadExport(data: {
	resourceId: string
	queryDesc: string
	queryParam: any
	pageSize?: number
}) {
	return postJson(`${modalApi.documentDownload}/dashboard/resource/export`, {
		...data,
		queryParam: JSON.stringify(data?.queryParam),
		pageSize: data?.pageSize || 1000,
	})
}

export function downloadDocumentUrl(data: {
	resourceId: string
	queryDesc: string
	queryParam: any
	pageSize?: number
}) {
	downloadExport(data)
		.then((res) => {
			if (res?.success) {
				message.success('请前往任务中心下载')
			}
		})
		.catch((err) => {
			message.error(err)
		})
}

/**
 * 处理实现文件下载功能
 * @param {file}        File 文件
 * @param {fileName}    下载的文件名称包含后缀（比如：hello.png）
 * */
export function downloadFile(file: any, fileName: string) {
	// 创建blob对象
	const blob = new Blob([file])

	// 创建a标签，通过a标签实现下载
	const dom = document.createElement('a')
	dom.download = fileName
	dom.href = URL.createObjectURL(blob)
	dom.id = 'upload-file-dom'
	dom.style.display = 'none'
	document.body.appendChild(dom)

	// 触发点击事件
	dom.click()

	// 释放资源
	URL.revokeObjectURL(dom.href)
	document.getElementById('upload-file-dom')?.remove()
}

export function downloadByUrl(url: string, filename: string) {
	const elelink = document.createElement('a')
	elelink.style.display = 'none'
	elelink.target = '_blank'
	elelink.href = url
	elelink.download = filename
	document.body.appendChild(elelink)
	elelink.click()
	document.body.removeChild(elelink)
}

/** 获取模板下载地址 */
export function getDownloadUrl(data: any) {
	return pget(
		`${modalApi.common}/shopec-template-config/templateconfig/getDownloadUrl`,
		data,
	)
}


export function downloadImage(filename: string, url: any) {
	const a = document.createElement('a')
	a.href = url
	a.download = filename
	a.click()
	a.remove() // 移除掉 <a>
}

export const getTemplateUrl = (
	sourceId: number | undefined,
	templateType: string | undefined,
) => {
	getDownloadUrl({ sourceId, templateType })
		.then((res: any) => {
			if (res?.success) {
				downloadImage(`${res?.data?.templateType}.xlsx`, res?.data?.url)
			}
		})
		.catch((err) => {
			message.error(err)
		})
}
